関連付けについて
A:(延さん)
かなりつっこんだ話ですよ、大丈夫ですか、初心者の皆さん。
Q:(初心者の皆さん)
がんばってみまーす。
A:(延さん)
まずファイルの関連付けというは、ある拡張子のファイルを特定のアプリケーションに関連付け、そのファイルをクリックするだけで、当該アプリケーションを起動してしまおうという趣旨です。このことの意義についてはこちら「ファイルの関連付けの意義」で詳しく説明しているので参照して下さい。
ところで目的は拡張子とアプリケーションの関連付けなのですが、現在のWindowsの仕様では、途中に「ファイルタイプ」というものが介在するようになっています。ここが極めて重要です。
[ファイル関連付けの順序]
1.
拡張子(複数) --> ファイルタイプ(単数)
2.
ファイルタイプ(単数) --> アプリケーション(複数)
そしてこの関連付けの情報は「レジストリ」というところに記録されています。このレジストリにはWindowsの様々な重要な情報が記録されています。このレジストリの情報を直接読み書きするのが、その名の通り「レジストリエディタ」というツールです。これの使い方はこちら「レジストリエディタの使い方」を参照して下さい。
ではさっそくレジストリエディタでファイルの関連付けに関する記述をみてみましょう。関連付け関係の「キー」はすべて「HKEY_CLASSES_ROOT」というキーの下にあります。
[レジストリエディタ図 HKEY_CLASSES_ROOTキー]
このキーの直下にはまず「.xxx」といったピリオドで始まる拡張子のキーがずらりとならんでいます。この中から、例として「.jpg」という拡張子のキーを捜しましょう。
[レジストリエディタ図 拡張子キー]
あったら、そのキーを選択すると、右のリストの、「名前」が「(標準)」の値の「データ」を見ます。この場合、「jpegfile」になってるでしょ。これが拡張子「jpg」に関連付けられたファイルタイプです。ここが「拡張子」と「ファイルタイプ」との関連付けをつかさどる部分です。非常に重要な部分ですからよく覚えておいて下さい。
ここに「Content Type」という値がありますが、これは今回は気にしなくてもいいです。
関連付けられたファイルタイプが分かったら、次にどんどんスクロールして下ります。拡張子のキーの後には、同レベルにまたずらりとファイルタイプのキーが続きます。ピリオドで始まっていないものがファイルタイプキーです。この中から「jpegfile」というキーを捜します。
キーあったでしょ。その下に更に「Defaulticon」というキーがありますが、これがエクスプローラなどで、Jpgという拡張子のファイルのアイコンになるものです。アイコンに関してはこちら「アイコンの関連付け」補足説明しています。
そして同じレベルにshellというキーがあります。ここがいよいよ関連アプリケーションの記述なのですが、まだいくつかの段階があります。「shell」キーの下にはアクションと呼ばれるキーがあります。上記の場合は「open」というキーと「photoshop」というキーがあるでしょ。これらが「アクション」です。これらアクションキーの下にそれぞれcommandというキーがあって、ここにやっとアプリケーションが記述されています。
[レジストリエディタ図 「open」アクションのcommandキー]
[レジストリエディタ図 「photoshop」アクションのcommandキー]
「open」キーの下の「command」キーには「iexplore(インターネットエクスプローラ)」が記述されています。一方「photoshop」キーの下の「command」キーには「photoshop(フォトショップ)」が記述されています。随分長い道のりでした。これでやっと「jpg」という拡張子が、「インターネットエクスプローラ」と「フォトショップ」という2つのアプリケーションにたどり着いた訳です。
更に多くのアプリケーションを関連付けるには、「アクション」キーから下を増やします。上記の例では「open」と「photoshop」という2つのアクションがあるので、この場合関連付けは2つということになります。ここに適当な名前でアクションを追加して、そのアクションに「command」キーを作り、そこにアプリケーションを記述することで、更に関連付けを増やすことができます。
ところで複数の関連付け(アクション)がある場合、どれかを「標準」アクションにしなければいけません。「標準」というのは、そのアクションがダブルクリックをしたときに実行されるということです。右クリックででるコンテキストメニューでも太字になっています。「標準」でないアクションは、このコンテキストメニューを出してそこで選択して起動します。
標準アクションの指定は、「shell」キーの名前標準に記述します。
[レジストリエディタ図 標準アクション]
例の場合は、「photoshop」アクションが標準アクションになります。またここに記述がない場合は、「open」アクションが標準になるという決まりもあります。
Q:(貴子)
でもレジストリってあまりいじらない方がいいって聞いたけど。
A:(延さん)
まあレジストリそのものはWindowsを使っている間は常に変化していると考えていいので、レジストリをいじってはいけないというより、「レジストリエディタ」で直接レジストリを操作するのは危険だよという話です。確かにそれは言えます。レジストリエディタ以外にシステムが用意してくれた方法があるなら、それを使う方がはるかに安全です。
実はファイルの関連付けに関しても、レジストリエディタを使わず、システムが用意した操作で作業を行うことができます。それは「エクスプローラ」の「表示(V)」プルダウンメニュー(Windows2000、WindowsMEの場合は「ツール(T)...」プルダウンメニュー)の「オプション(O)...」(インターネットエクスプローラ4.0以降をインストールしている場合は「フォルダ オプション(O)...」)メニューで起動した「(フォルダ )オプション」ダイアログの「ファイルタイプ」タブです。
ただしここではファイルの関連付けに関して一部のことしかできません。一部というのは上記の関連付けの順序でいうと2番のファイルタイプとアプリケーションの関係の部分です。それでもすべてができる訳ではなくて、一部の既存のファイルタイプに関しては編集できないものもありますし、ファイルタイプそのものの編集はできても、一部の操作ができないものもあります。この場合あるレジストリ値を変更することによって、編集可能とすることもできるのですが、結局レジストリエディタを必要とすることには変わりないということです。
一方1番の拡張子とファイルタイプの関係の部分に関しては非常に限定されたことしかできません。これがこの「ファイルタイプ」タブの不完全といわれるゆえんです。安全だけど不完全。シャレにもならないですね
このタブでできる「拡張子とファイルタイプの関係」に関する作業は、新規にファイルタイプを作成するときに、そのファイルタイプに関連付ける拡張子を、まだどのファイルタイプにも関連付けられていないものを、一つだけ指定できるということのみです。この時複数の拡張子をその新規ファイルタイプに関連付けることもできないし、既存のファイルタイプに対して新たに拡張子を関連付けることができない、つまり関連拡張子の追加ができないのです。また既存のファイルタイプに既に関連付けられている拡張子を割り当てることもできません。はっきり言って、「拡張子とファイルタイプの関係」に関する作業は、ファイルタイプタブではできないことだらけです。全く不完全といわざるを得ません。
Q:(貴子)
どうしてそのような仕様になっているのかしら?
A:(延さん)
きっと、そもそもファイルの関連付け関係は、基本的にユーザがやることではないというスタンスなのだろうと思います。確かに殆どの作業はアプリケーションソフトのインストールプログラム(インストーラ)がやっています。でもそのインストーラのやることがユーザの意志に反していたり、アプリケーション間で衝突した場合に、簡単に変更できるよう、もう少しファイルの関連付けに関してユーザにイニシアチブを持たせてもいいと思うのだけどね。
私はWindowsシステムのこのファイルの関連付けという機能は非常に重要で大変便利な機能だと思っているので、パワーユーザだけでなく、全てのユーザが手軽に利用できるようにするべきだと思うのだけども、現状はそうなっていない以上、鬼門のレジストリエディタを使った方法を覚えていくしかないですね。
Q:(貴子)
ちょっとレジストリをいじるのは恐いわね。
A:(延さん)
まあ前述のように「ファイルタイプ」タブでもできることはあるので、なるべくこちらで行い、どうしてもレジストリエディタでないとできないことだけ、レジストリエディタで行うというやりかたで進めたいと思います。
では次にそのファイルタイプタブでの操作にいきましょう。しかしその前にもう一つレジストリエディタでやらねばならないことがある場合があります。
「レジストリエディタ図 ファイルタイプキー」をもう一度見てほしいのですが、右のリストの名前「(標準)」のデータが「値の設定なし」になっているでしょ。これはこの「jpegfile」というファイルタイプには「タイプの説明」が付いていないということなのですよ。当然「jpegfile」というのがこのファイルタイプの「名称」なのですが、この他に「タイプの説明」が記述されていないと、ファイルタイプタブの「登録されているファイルタイプ」リストには出てこないんです。この「タイプの説明」の付いてないファイルタイプが私は名無しファイルタイプと呼んでいます。
とにかくリストに出てこないことにはお手上げなので、「タイプの説明」を付けてみましょう。「JPEG
イメージ」とでもしましょうか。
「(標準)」をダブルクリックすると、次の文字列編集ダイアログがでます。
[文字列編集ダイアログ]
ここで名称を記述して、「OK]ボタン。
[レジストリエディタ図 ファイルタイプの説明]
これでファイルタイプにタイプの説明がつきました。ファイルタイプタブのリストで出てきて、そこで編集できるようになります。
実はファイルタイプが名無しの場合でも、それをファイルタイプタブのリストに表示させる方法が一つだけあります。それは「EditFlags」というバイナリ値の前から7番目のビットを立て、8番目のビットを立てないことです。今言ったことの意味が分からない人はいじらないようにしましょう。「EditFlags」についてはこちら「EditFlags」で詳しく解説しています。超裏業でした。
さてファイルタイプタブの使い方はページを改めましょうか。こちらへをどうぞ。